<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="lVrZO" id="lVrZO"><span data-lake-id="uef75c700" id="uef75c700">典型回答</span></h1>
  <p data-lake-id="u75a4fbb5" id="u75a4fbb5"><br></p>
  <p data-lake-id="u2a23e002" id="u2a23e002"><span data-lake-id="u1ef878dc" id="u1ef878dc">Object Relational Mapping ，简称ORM，翻译过来是对象关系映射。一般用于实现面向对象编程语言里的对象和数据库中的之间的转换。</span></p>
  <p data-lake-id="u354cea87" id="u354cea87"><span data-lake-id="u7a999ca1" id="u7a999ca1">​</span><br></p>
  <p data-lake-id="u6887f71d" id="u6887f71d"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1673157428793-a11d2cf5-d725-435b-8cfe-3d3f1b65d091.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_20%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u499c2262" id="u499c2262"><br></p>
  <p data-lake-id="uf82394c9" id="uf82394c9"><span data-lake-id="u45737c30" id="u45737c30">ORM 有下面这些优点：</span></p>
  <ul list="uee34bbbe">
   <li fid="u972270ec" data-lake-id="u392c49cf" id="u392c49cf"><span data-lake-id="u358b412c" id="u358b412c">数据模型都在一个地方定义，更容易更新和维护，也利于重用代码。</span></li>
   <li fid="u972270ec" data-lake-id="ue6e0ab36" id="ue6e0ab36"><span data-lake-id="u4ade3b0e" id="u4ade3b0e">ORM 有现成的工具，很多功能都可以自动完成，比如数据消毒、预处理、事务等等。</span></li>
  </ul>
  <blockquote data-lake-id="u32cb9f32" id="u32cb9f32">
   <p data-lake-id="u82d32afc" id="u82d32afc"><span data-lake-id="uf9b867fb" id="uf9b867fb">数据消毒是指对用户输入的数据进行处理，以防止恶意数据或不合法数据对应用程序的攻击或错误影响。常见的数据消毒操作包括转义特殊字符、验证输入、限制输入长度等。ORM框架可以做参数化查询、数据类型验证等可以实现数据消毒</span></p>
  </blockquote>
  <ul list="uee34bbbe" start="3">
   <li fid="u972270ec" data-lake-id="u87127c3a" id="u87127c3a"><span data-lake-id="u242a939e" id="u242a939e">它迫使你使用 MVC 架构，ORM 就是天然的 Model，最终使代码更清晰。</span></li>
   <li fid="u972270ec" data-lake-id="udc6ed9d1" id="udc6ed9d1"><span data-lake-id="ucb007c57" id="ucb007c57">基于 ORM 的业务代码比较简单，代码量少，语义性好，容易理解。</span></li>
   <li fid="u972270ec" data-lake-id="u2cec7f88" id="u2cec7f88"><span data-lake-id="u4325c23b" id="u4325c23b">你不必编写性能不佳的 SQL。</span></li>
  </ul>
  <p data-lake-id="u0346e4b4" id="u0346e4b4"><br></p>
  <p data-lake-id="u966dc2d1" id="u966dc2d1"><span data-lake-id="uf2691f73" id="uf2691f73">但是，ORM 也有很突出的缺点：</span></p>
  <ul list="ub83e827b">
   <li fid="u70fbd550" data-lake-id="u458d2511" id="u458d2511"><span data-lake-id="ub50fb939" id="ub50fb939">ORM 库不是轻量级工具，需要花很多精力学习和设置。</span></li>
   <li fid="u70fbd550" data-lake-id="u0fc4ef65" id="u0fc4ef65"><span data-lake-id="u142de8ba" id="u142de8ba">对于复杂的查询，ORM 要么是无法表达，要么是性能不如原生的 SQL。</span></li>
   <li fid="u70fbd550" data-lake-id="udf63d0e1" id="udf63d0e1"><span data-lake-id="u722bcf08" id="u722bcf08">ORM 抽象掉了数据库层，开发者无法了解底层的数据库操作，也无法定制一些特殊的 SQL。</span></li>
  </ul>
  <p data-lake-id="u989a8953" id="u989a8953"><span data-lake-id="ue9bcad00" id="ue9bcad00">​</span><br></p>
  <p data-lake-id="ua6fd743f" id="ua6fd743f"><span data-lake-id="u9214c204" id="u9214c204">常见的ORM框架有Hibernate、ibatis、Mybatis等。</span></p>
 </body>
</html>